const { execSync } = require('child_process')
const fs = require('fs')
const path = require('path')

console.log('正在清理所有node_modules目录和锁定文件...')

// 使用npx来执行rimraf命令，这样即使没有安装依赖也能运行
function rimraf(dir) {
  try {
    execSync(`npx rimraf ${dir}`, { stdio: 'inherit' })
  } catch (error) {
    console.log(`无法删除${dir}，可能已不存在`)
  }
}

// 删除根目录的node_modules和pnpm-lock.yaml
rimraf('node_modules')

if (fs.existsSync('pnpm-lock.yaml')) {
  console.log('删除pnpm-lock.yaml...')
  fs.unlinkSync('pnpm-lock.yaml')
}

// 删除packages下所有子包的node_modules
try {
  const packagesDir = path.join(__dirname, '..', 'packages')
  if (fs.existsSync(packagesDir)) {
    const packages = fs.readdirSync(packagesDir).filter(item => {
      const itemPath = path.join(packagesDir, item)
      return fs.statSync(itemPath).isDirectory()
    })

    packages.forEach(pkg => {
      const nodeModulesPath = path.join(packagesDir, pkg, 'node_modules')
      rimraf(nodeModulesPath)
    })
  }

  console.log('清理完成！')
  console.log('开始重新安装所有依赖...')
  execSync('pnpm install', { stdio: 'inherit' })
  console.log('依赖安装完成！')
} catch (error) {
  console.error('清理或安装过程中出错：', error)
  process.exit(1)
}
